<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象的属性</title>
    <script>
        /* 
            属性名
                通常属性名就是一个字符串，所以属性名可以是任何值，没什么特殊要求。（无关键字的要求）
                    但是如果你的属性名太特殊了，不能直接使用，需要使用[]设置。
                    (经自己研究发现，虽无关键字要求，但是属性名如果以数字开头，或含有特殊符号的时候，用（对象.属性名）这种方式访问会报错，这时最好还是使用对象['属性名'])

                    也可以使用符号(symbol)，作为属性名,来添加属性，获取这种属性时，也必须使用symbol来获取

                    使用symbol添加的属性，通常是那些不希望被外界访问的属性

                    使用[]去操作属性时，可以使用变量

            属性值

                可以是任意的数据类型，也可以是一个对象。

            使用typeof 检查对象类型，返回object

            in-运算符
                检查该对象中是否有该属性
            console.log("属性" in 对象)     如果有，控制台输出true

            console.log("age" in obj1)

        */

        let obj = new Object()
        obj.name='juliet';
        obj['1a']="你是谁？";
        console.log(obj['1a'])

    //    obj.JavaScript='Shaw Lee'  // 不建议起这样的名
    //    obj.let="test"
    //    obj['!dwadfawfa12w1f']='test'   // 不建议起这样的名

        let test_symbol=Symbol()
        console.log(test_symbol)

        // 使用symBol作为属性名
        obj[test_symbol]="通过symbol添加的属性"
        console.log(obj)




console.log(`--------------------------------------------------------------`)


/* ======================================================================== */
        let s="address" //声明一个变量s,其值为address
        let obj1= new Object()
        
        obj1.name="shaw lee"    //向obj1中添加一个属性，其属性名name,其值为shaw lee
        obj1.age=27
        obj1.gender='male'
        // obj['address']='甘肃天水'        // 这种方式是添加属性名和属性值
        obj1[s]='江苏南京'      //通过变量的值来确定属性名，从而设置属性值

        obj1['a']=obj           // 将obj作为obj1中a属性的属性值
        

        obj1["a"].animals="cat"     // 给obj1中的a属性里面的属性值（obj）中添加属性为animals，其值为cat。
        /*      
                name:shaw lee    
                age:27
        obj1    address:"江苏南京"
                gender:'male'

                    1a:"你是谁"
                a:  animals:"cat"
                    Symbol():"通过symbol添加的属性"
                    name:"juliet"

        */
        obj1.a.animals="little_cats"
        console.log(obj1)
        console.log("age" in obj1)
    </script>
</head>
<body>
    
</body>
</html>